package svl;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import app.CPR;
import app.Odv;

import dominio.Cliente;
import dominio.Domicilio;
import dominio.ItemSolicitud;
import dominio.Rodamiento;
import dominio.SolicitudCotizacion;
import exceptions.InsertException;

/**
 * Servlet implementation class solicitudCotizacion
 */
@WebServlet("/solicitudCotizacion")
public class solicitudCotizacion extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public solicitudCotizacion() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String codigo = request.getParameter("codigo");
		String serie = request.getParameter("serie");
		String marca = request.getParameter("marca");
		String caracteristicas = request.getParameter("caracteristicas");
		String origen = request.getParameter("origen");
		
		List<Rodamiento> rodamientos = CPR.getCPR().listarRodamientos(codigo,serie,marca,caracteristicas,origen);
		request.setAttribute("rodamientos", rodamientos); 
		
		String dire = "/WEB-INF/out/solicitudCotizacion.jsp";
		RequestDispatcher dispatcher = request.getRequestDispatcher(dire);
	    dispatcher.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		HttpSession session = request.getSession(true);
		
		SolicitudCotizacion sc = (SolicitudCotizacion)session.getAttribute("solicitud");
		
		// Se resetea la lista de rodamientos.
					List<Rodamiento> rodamientos = CPR.getCPR().listarRodamientos("","","","","");
					request.setAttribute("rodamientos", rodamientos);
		
					
		System.out.println("NUEVA?:" + request.getParameter("hdnNueva"));
					
		// Se desea crear una nueva solicitud
		if(request.getParameter("hdnNueva") != "" && Integer.parseInt(request.getParameter("hdnNueva")) == 1)
		{
			session.removeAttribute("solicitud");
			String dire = "/WEB-INF/out/solicitudCotizacion.jsp";
			RequestDispatcher dispatcher = request.getRequestDispatcher(dire);
		    dispatcher.forward(request, response);
		}
		else
		{					
			// Es una nueva solicitud
			if(sc == null)
			{
				System.out.println("Creando nueva solicitud para el cliente");
				Domicilio d = new Domicilio();
				d.setCalle("Calle de prueba");
				d.setDepartamento("A");
				d.setLocalidad("Quilmes");
				d.setNumero("555");
				d.setPiso("11");
				
				Cliente c = new Cliente();
				c.setCondicionIVA("Monotributista");
				c.setCuil("209999999995");
				c.setRazonSocial("Cliente de Prueba S.A.");
				c.setTelefono("01115666666");
				c.setDomicilio(d);
				
				Odv.getinstancia().agregarCliente(c);
							
				sc = new SolicitudCotizacion();
				sc.setCliente(c);
				sc.setFecha(new Date());
				
				try {
					Odv.getinstancia().crearSolicitudCotizacion(sc);
				} catch (InsertException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}			
			}	
			
			Rodamiento r = Odv.getinstancia().getRodamiento(Integer.parseInt(request.getParameter("id")));
			
			// Se crea el item para agregar a la solicitud
			ItemSolicitud item = new ItemSolicitud();
			item.setRodamiento(r);		
			item.setCantidad(Integer.parseInt(request.getParameter("cantidad")));
					
			sc.getItems().add(item);
			
			CPR.getCPR().agregarItemSolicitud(item);	
			
			request.setAttribute("items", sc.getItems());
			session.setAttribute("solicitud", sc);
			
			System.out.println("Item agregado a la solicitud");
			System.out.println("Cantidad de items en la solicitud: "+ sc.getItems().size());
			
			String dire = "/WEB-INF/out/solicitudCotizacion.jsp";
			RequestDispatcher dispatcher = request.getRequestDispatcher(dire);
		    dispatcher.forward(request, response);
		}
	}
}
